package de.cz3rwinski.haushaltsbuch;

import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.content.Context;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;

public class Input_new_row_Dialog {
	
	static EditText et_datum;
	private EditText  et_stichwort, et_person, et_betrag;
	private Spinner sp_konto, sp_kategorie;

	private Button bt_datum, bt_eingabe, bt_reset, bt_vorzeichenwechsel;
	private String konto, kategorie;
	private static int tag, monat, jahr;

	private DatabaseHandler db;
	private Datumsbezug datum;
	private Dialog dialog;
	private Context context;
	
	

	Input_new_row_Dialog(Context ctx){
		this.context=ctx;
		dialog = new Dialog(context);
		dialog.setContentView(R.layout.activity_input_new_row);
		dialog.setTitle("Neuer Datensatz");
		dialog.setCancelable(true);
		
		bt_datum = (Button) dialog.findViewById(R.id.bt_datum);
		//et_art = (EditText) dialog.findViewById(R.id.et_art);
		sp_konto = (Spinner) dialog.findViewById(R.id.sp_konto);
		sp_kategorie = (Spinner) dialog.findViewById(R.id.sp_kategorie);
		et_stichwort = (EditText) dialog.findViewById(R.id.et_stichwort);
		et_person = (EditText) dialog.findViewById(R.id.et_person);
		//sp_luxusklasse = (Spinner) dialog.findViewById(R.id.sp_luxusklasse);
		et_betrag = (EditText) dialog.findViewById(R.id.et_betrag);
		//cb_monatlich = (CheckBox) dialog.findViewById(R.id.cb_monatlich);
		//cb_jaehrlich =(CheckBox) dialog.findViewById(R.id.cb_jaehrlich);
		bt_eingabe = (Button) dialog.findViewById(R.id.bt_eingabe);
		bt_reset = (Button) dialog.findViewById(R.id.bt_reset);
		bt_vorzeichenwechsel = (Button) dialog.findViewById(R.id.bt_vorzeichenwechsel);

		//lv1 = (ListView) findViewById(R.id.lv_ausgabe);

		db = new DatabaseHandler(context);

		InitializeKontoSpinner();
		InitializeKategorieSpinner();
		//InitializeLuxusklasseSpinner();

		datum = new Datumsbezug();
		bt_datum.setText(datum.getDateToday());
		tag = datum.getCurrentDayInt();
		monat= datum.getCurrentMonthInt();
		jahr=datum.getCurrentYearInt();

		final OnDateSetListener odsl = new OnDateSetListener() {

			public void onDateSet(DatePicker arg0, int year, int month,
					int dayOfMonth) {
				month++;
				tag=dayOfMonth;
				monat=month;
				jahr=year;
				String monat = month < 10 ? ("0" + month) : "" + month;

				bt_datum.setText(tag + "." + monat + "." + jahr);
			}
		};

		bt_datum.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				DatePickerDialog datePickDiag = new DatePickerDialog(context, odsl, datum.getCurrentYearInt(), datum.getCurrentMonthInt() - 1, datum.getCurrentDayInt());
				
				datePickDiag.getDatePicker().setMaxDate(datum.convertDateToLong("31.12.2020"));
				datePickDiag.getDatePicker().setMinDate(datum.convertDateToLong("01.01.2010"));
				datePickDiag.show();
			}
		});
		bt_vorzeichenwechsel.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				vorzeichenwechsel();
			}
		});
		
		bt_eingabe.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				eingabe();
			}
		});
		bt_reset.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				eingabereset();
			}
		});
		

		dialog.show();
	};


		final String[] kategorien = { "Fahrgeld", "Fehlbetrag", "Friseur","Geschenke" };	
	private void InitializeKategorieSpinner() {
		Spinner kategorieSpinner = (Spinner) dialog.findViewById(R.id.sp_kategorie);
		ArrayAdapter<?> adapterKategorien = new ArrayAdapter<Object>(context,
				android.R.layout.simple_spinner_item, kategorien);
		adapterKategorien
				.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		kategorieSpinner.setAdapter(adapterKategorien);
		kategorieSpinner
				.setOnItemSelectedListener(new OnItemSelectedListener() {
					@Override
					public void onItemSelected(AdapterView<?> parent,
							View view, int position, long id) {
						kategorie = kategorien[position];// wochenTagposition =
															// position;
					}

					@Override
					public void onNothingSelected(AdapterView<?> parent) {
					}
				});
	}

		final String[] kontos = { "Bargeld", "Girokonto", "Sparbuch" };
	private void InitializeKontoSpinner() {
		

		Spinner kontoSpinner = (Spinner) dialog.findViewById(R.id.sp_konto);
		ArrayAdapter<?> adapterKonto = new ArrayAdapter<Object>(context,
				android.R.layout.simple_spinner_item, kontos);
		adapterKonto
				.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		kontoSpinner.setAdapter(adapterKonto);
		kontoSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
			@Override
			public void onItemSelected(AdapterView<?> parent, View view,
					int position, long id) {
				konto = kontos[position];
			}

			@Override
			public void onNothingSelected(AdapterView<?> parent) {
			}
		});
	}
	
	public void eingabe() {
		String datum = bt_datum.getText().toString();
		//String art = et_art.getText().toString();
		String stichwort = et_stichwort.getText().toString();
		String person = et_person.getText().toString();
		String betrag = et_betrag.getText().toString();
		
		
		
		
		double bestand=0.0;
		try {
			bestand= Double.parseDouble(betrag);
			betrag=String.valueOf(runden( bestand,2));
		} catch (NumberFormatException e) {}

		db.addContact(new Contact(""+tag,""+monat,""+jahr, "art", konto, kategorie, noEmpty(stichwort), noEmpty(person), "luxusklasse",	noEmpty(betrag)));
		
		Toast.makeText(context, "Datensatz wurde gespeichert", Toast.LENGTH_SHORT).show();
		
		
	}
///////////////////////////////////////////////////////////////////////////////////////////////////	
	public void eingabereset(int tag, int monat, int jahr, String art, String konto, String kategorie, String stichwort, String person, String luxusklasse, String betrag) {
		bt_datum.setText(""+tag+"."+monat+"."+jahr);
		//et_art.setText(art);
		sp_konto.setSelection(spinnerPositionByString(konto,kontos));
		sp_kategorie.setSelection(spinnerPositionByString(kategorie,kategorien));
		et_stichwort.setText(stichwort);
		et_person.setText(person);
		//sp_luxusklasse.setSelection(spinnerPositionByString(luxusklasse,luxusklassen));
		et_betrag.setText(betrag);
		//cb_monatlich.setChecked(false);
		//cb_jaehrlich.setChecked(false);
	}

	public int spinnerPositionByString(String name, String[] array){
		int position=0;
		for (String cn : array) {
			if(!cn.equals(name))position++;
		}

		return position;
	}

///////////////////////////////////////////////////////////////////////////////////////////////////	
	
	public void eingabereset() {
		bt_datum.setText(this.datum.getDateToday());
		//et_art.setText("");
		sp_konto.setSelection(0);
		sp_kategorie.setSelection(0);
		et_stichwort.setText("");
		et_person.setText("");
		//sp_luxusklasse.setSelection(0);
		et_betrag.setText("");
		//cb_monatlich.setChecked(false);
		//cb_jaehrlich.setChecked(false);
	}
	
	public static double runden(double wert, int stellen) {
		double gerundet = Math.round(wert * Math.pow(10d, stellen));
		return gerundet / Math.pow(10d, stellen);
	}

	public String noEmpty(String data){
		return data==null||data.equals("")||data.equals(" ")? "-":data;
	}
	
	public void vorzeichenwechsel() {
		try {
			Double betrag = Double.parseDouble(et_betrag.getText().toString());
			betrag=betrag * -1;
			et_betrag.setText(String.valueOf(betrag));//R.drawable.actionbar_background_pattern_tile
			} catch (Exception e) {
		}
	}
	
}
